Надёжность сети: таймауты запросов + кэш PoW-WASM (общий lib/pow)#20
Open
danscMax wants to merge 1 commit into
Open
Надёжность сети: таймауты запросов + кэш PoW-WASM (общий lib/pow)#20danscMax wants to merge 1 commit into
danscMax wants to merge 1 commit into
Conversation
- lib/pow.js: компилируем WASM один раз и кэшируем модуль (раньше WASM качался и компилировался на КАЖДЫЙ PoW, в т.ч. на каждом ретрае); добавлен таймаут на загрузку WASM. solvePOW теперь общий для server.js и client.js (был продублирован). - dsFetch(): все запросы к DeepSeek получают жёсткий таймаут (у голого fetch() его нет — зависший upstream держал запрос клиента и блокировал аккаунт бесконечно). - Поднят TextDecoder из цикла чтения стрима: иначе мультибайтовые символы (кириллица/emoji) на границе чанков бьются (locale по умолчанию — ru). - client.js: переиспользует lib/pow; stdin через fd 0 и os.tmpdir() — работает на Windows (раньше /dev/stdin и /tmp ломали кросс-платформенность). - .gitignore: игнорируем deepseek-accounts.json и data/accounts/*.json — это живые токены/cookie, их нельзя коммитить.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Набор небольших правок надёжности сетевого слоя. Поведение API не меняется.
Что и зачем
lib/pow.js). Раньше WASM для PoW качался по сетии компилировался на КАЖДЫЙ запрос завершения (и на каждом ретрае пустого ответа —
до 10× за один запрос). Теперь модуль компилируется один раз и кэшируется по URL;
на solve создаётся только свежий инстанс. Плюс жёсткий таймаут на загрузку WASM.
dsFetch). У гологоfetch()неттаймаута по умолчанию — зависший upstream держал HTTP-соединение клиента и
«пину́л» аккаунт бесконечно. Теперь у каждого вызова есть таймаут
(
DEEPSEEK_FETCH_TIMEOUT_MS, по умолчанию 60с).TextDecoderсоздавался заново на каждый чанк,из-за чего мультибайтовые символы (кириллица/emoji) на границе чанков ломались
(
{stream:true}хранит состояние только в одном инстансе). Декодер вынесен из цикла.client.jsкросс-платформенный + DRY. Переиспользует общийlib/pow(раньшеsolvePOWбыл продублирован в server.js и client.js), читает stdin через fd 0 ипишет в
os.tmpdir()— работает на Windows (раньше/dev/stdinи/tmpломали запуск)..gitignore: игнорируемdeepseek-accounts.jsonиdata/accounts/*.json—это живые токены/cookie, их нельзя коммитить.
Проверено
npm test(node --check всех файлов + юнит-тесты) — зелёный. Логика PoW/стримане изменена, только устранены лишняя загрузка WASM, отсутствие таймаутов и баг декодера.